<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>
<body>


    <script>
        // 简单的数据结构(仅仅有一层数据)：
            // 例如：
                var arr = ["red","green","blue"];
                var point = {x: 100, y: 200, color: "pink"}

                // var obj = point;// 复制地址， 任何一方的数据修改，会互相影响

        // 复制arr或point的数据
        // 浅拷贝：
            // 复制数据集合中的第一层数据，而且复制数据的过程中，不区分数据类型。
            // 适用于复制简单的数据结构
        
        // 编码：
        function simpleCopy(elements){
            // 定义空的数据集合 是[数组]呢? 是{对象}呢?
            var newData = Array.isArray(elements) == true ? [] : {};
            var newData = Array.isArray(elements) == true ? [] : {};
            // 复制数据了 
            for(var key  in  elements){
                // 复制
                newData[key] = elements[key]; //数组的形式
            }
            // 循环结束，完成复制
            return newData;
        }

        // 拷贝 arr
        var res = simpleCopy(arr);
        res[0] = "红色";//新数据变化了
        console.log(res);// ["红色", "green", "blue"]
        console.log(arr);// ["red", "green", "blue"]


        // 拷贝 point
        var obj = simpleCopy(point);
        obj.x = 888;  //新数据变化了
        console.log(obj); //  {x: 888, y: 200, color: "pink"}
        console.log(point);// {x: 100, y: 200, color: "pink"}


        // 针对简单的数据结构：
            // 新的数据修改了，不会影响原来的数据！
      



        


        // for ... in 语句 (可以循环对象，数组)
        //  var point = {x: 100, y: 200, color: "pink"}
        // for(var key in point){
            // console.log(key);// x y  color   (键)
            // console.log(point[key]);//100  200  pink （值）
            // console.log("键值对:",key , "--->", point[key]);
        // }

        var arr1 = ["red", "green" , "blue"];
        var points = {x : 200 , y : 300 , d : 400};

        function simpleCopy1(elements) {
            var newData1 = Array.isArray(elements) == true ? [] : {};
            for(var key in elements) {
                newData1[key] = elements[key];
            }
            return newData1;
        }

        simpleCopy(arr1);
        console.log(simpleCopy1(arr1));

        
    </script>
</body>
</html>